導讀:在日常的應用開發中,我們可能需要讓某些對象離開內存空間,存儲到物理磁盤,以便長期保存,同時也能減少對內存的壓力,而在需要時再將其從磁盤讀取到內存,比如將某個特定的對象保存到
發表日期:2019-12-10
文章編輯:興田科技
瀏覽次數:7142
標簽:
在日常的應用開發中,我們可能需要讓某些對象離開內存空間,存儲到物理磁盤,以便長期保存,同時也能減少對內存的壓力,而在需要時再將其從磁盤讀取到內存,比如將某個特定的對象保存到文件中,隔一段時間后再把它讀取到內存中使用,那么該對象就需要實現序列化操作,在Java中可以使用Serializable接口實現對象的序列化,而在android中既可以使用Serializable接口實現對象序列化也可以使用parcelable接口實現對象序列化,但是在內存操作時更傾向于實現parcelable接口,這樣會使用傳輸效率更高效。接下來我們將分別詳細地介紹這樣兩種序列化操作。
了解序列化與反序列
序列化
由于存在于內存中的對象都是暫時的,無法長期駐存,為了把對象的狀態保持下來,這時需要把對象寫入到磁盤或者其他介質中,這個過程就叫做序列化。
反序列化
反序列化恰恰是序列化的反向操作,也就是說,把已存在在磁盤或者其他介質中的對象,反序列化(讀取)到內存中,以便后續操作,而這個過程就叫做反序列化。
概括性來說序列化是指將對象實例的狀態存儲到存儲媒體(磁盤或者其他介質)的過程。在此過程中,先將對象的公共字段和私有字段以及類的名稱(包括類所在的程序集)轉換為字節流,然后再把字節流寫入數據流。在隨后對對象進行反序列化時,將創建出與原對象完全相同的副本。
實現序列化的必要條件
一個對象要實現序列化操作,該類就必須實現了Serializable接口或者parcelable接口,其中Serializable接口是在java中的序列化抽象類,而parcelable接口則是android中特有的序列化接口,在某些情況下,parcelable接口實現的序列化更為高效,關于它們的實現案例我們后續會分析,這里只要清楚知道實現序列化操作時必須實現Serializable接口或者parcelable接口之一即可。
序列化的應用情景
主要有以下情況(但不限于以下情況)
1)內存中的對象寫入到硬盤;
2)用套接字在網絡上傳送對象;
3)通過RMI(RemoteMethodInvoke遠程方法調用)傳輸對象;
Serializable
Serializable是java提供的一個序列化接口,它是一個空接口,專門為對象提供標準的序列化和反序列化操作,使用Serializable實現類的序列化比較簡單,只要在類聲明中實現Serializable接口即可,同時強烈建議聲明序列化標識。
parcelable
鑒于Serializable在內存序列化上開銷比較大,而內存資源屬于android系統中的稀有資源(android系統分配給每個應用的內存開銷都是有限的),為此android中提供了parcelable接口來實現序列化操作,parcelable的性能比Serializable好,在內存開銷方面較小,所以在內存間數據傳輸時推薦使用parcelable,如通過Intent在activity間傳輸數據,而parcelable的缺點就使用起來比較麻煩。
上一篇:
微營銷:微信技巧七大問題替你解答上一篇:
成功的微商靠的真不是微商圈!更多新聞
2023
網絡推廣是企業成功的關鍵,尤其在五家渠這樣發展迅速的城市中。通過優化網站、社交媒體活動、內容營銷和電子郵件營銷,您可以將品牌傳播給更廣泛的受眾,并實現業務增長。選擇合適的網絡推廣服務提供商是確保成功的關鍵,因此您應該深入研究、考慮成本效益并參考客戶評價。五家渠網絡推廣將為您的品牌帶來巨大的機遇,為您的企業創造成功。
View details
2023
在移動設備普及的今天,蘭州網站建設公司致力于開發響應式設計的網站。這意味著無論用戶使用何種設備瀏覽網站,都能獲得良好的用戶體驗。這有助于提高搜索引擎排名并吸引更多的用戶訪問網站。
View details
2023
隨著互聯網的普及,使用搜索引擎來尋找和獲取信息已經成為主流。如果您的網站在搜索引擎結果中排名靠前,您將獲得更多的曝光和點擊量,從而帶來更多的潛在客戶和銷售機會。相反,如果您的網站排名靠后,您可能錯失大量的流量和潛在業務。
View details
2023
網絡推廣是指通過互聯網平臺來促銷產品或服務、吸引和保留客戶。它包括各種方法,如搜索引擎優化(SEO)、搜索引擎營銷(SEM)、社交媒體營銷、電子郵件營銷、內容營銷等。啟東網絡推廣是一種專注于啟東地區市場而提供的網絡推廣服務,可以幫助您在當地市場獲得更好的曝光和業務增長。
View details